import { reqDetailList, reqShopcar } from '@/api'
// 引入游客身份模块，生成一个随机的字符串
import { getUUID } from '@/utils/uuid_token'

export default {
  state: {
    detailList: {},
    uuid_token: getUUID()
  },
  mutations: {
    DETAILLIST(state, detailList) {
      state.detailList = detailList
    }
  },
  actions: {
    // 获取商品详情
    async detailList({ commit }, skuId) {
      const res = await reqDetailList(skuId)
      if (res.code === 200) {
        commit('DETAILLIST', res.data)
      }
    },
    // 向服务器提交购物车数据
    async addUpdateShopcar({ commit }, { skuId, skuNum }) {
      const res = await reqShopcar(skuId, skuNum)
      // async 返回的一定promise
      // 如果服务器返回的是200，表示成功
      if (res.code === 200) {
        // 返回非空字符串即为成功
        return 'ok'
      } else {
        return Promise.reject(new Error('faile'))
      }
    }
  },
  getters: {
    categoryView(state) {
      // 如果state里的detailList是一个空对象，在打点以后返回undefined，会报错
      // 先保证categoryView是一个空对象，就不会报错了
      return state.detailList.categoryView || {}
    },
    skuInfo(state) {
      return state.detailList.skuInfo || {}
    },
    spuSaleAttrList(state) {
      return state.detailList.spuSaleAttrList || {}
    }
  }
}
